package com.hex.es.service;

import com.hex.es.annotation.EsBuildParamTypeInfo;
import org.springframework.data.elasticsearch.core.query.SearchQuery;

import java.lang.reflect.Method;

/**
 * @description:
 * @author: Hex
 * @date: 2019/11/13 16:29
 */
public interface ReturnSearchInterface {

    /**
     * 处理查询方法
     * @param method
     * @param esBuildParamTypeInfo
     * @param searchQuery
     * @return
     * @throws Exception
     */
    Object search(Method method, EsBuildParamTypeInfo esBuildParamTypeInfo, SearchQuery searchQuery) throws Exception;

    /**
     * 是否匹配该执行器
     * @param method
     * @param esBuildParamTypeInfo
     * @return true:匹配 false：不匹配
     */
    Boolean check(Method method, EsBuildParamTypeInfo esBuildParamTypeInfo);

    /**
     * 执行器优先执行度
     * @return
     */
    int getOrder();
}
